在實作之前,先來介紹一下驗證
在介紹前先與另一個相似字 Authorization(授權) 做一點比較,簡單來說,授權像是人進入一個地方的允許權。做個比喻:持有登機證,便可以出境並進入一般旅客可以到的地方;而認證像是在人進入特殊地方的權利,如持有登機證跟信用卡 VIP,除了一般旅客可以到的地方,還可以進入 VIP 休息室。OK,接下來介紹驗證的方式。
介紹幾種常見的驗證方式:
最直接也最簡單的,就是在每次請求時都使用帳號及密碼來進行驗證,但因帳號密碼沒有經過加密,所以可能會被竊取,安全性較低,通常在低風險的情況才使用。
使用帳號密碼取得 token,token 為一組由數字跟英文字母組成的亂數組合,後續的請求 token 都會包含在 HTTP header 中,安全性較高,
但實作上較為複雜。
使用帳號密碼取得 access token 跟 refresh token,安全性較高。token 本身分為三個部分:Header, Payload, Verify signature,各自有不同功能,但 JWT 的體積較大,使用者多的時候可能會影響效能。
使用 cookie,為一般網站常見的驗證形式,實作簡單,可保持使用者狀態,但因 session 儲存在伺服器端,可能對伺服器造成資源消耗及效能減低。
本次使用的方法為 token authentication,接下來就一起來實作吧。